<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Paquetes_model extends CI_Model {

	function __construct()
	{
		parent::__construct();
	}

	/*
	|	Agrega un paquete a un usuario o institucion
	|	$paquete = array('data' => array('fecha_vencimiento'=>'', 'tipo' =>''), 'articulos' => array(1,2,3,4,5))
	*/
	public function agregar_paquete($paquete = array(), $ips = TRUE)
	{
		// Inserta los datos del Paquete
		$this->db->insert("paquetes", $paquete['data']);
		$id_paquete = $this->db->insert_id();

		// Inserta articulos
		if (isset($paquete['articulos']))
		{
			$data_paquete_articulo = array();
			foreach ($paquete['articulos'] as $id)
			{
				$data_paquete_articulo[] = array('id_paquete'=>$id_paquete, 'id_articulo'=>$id);
			}
			$this->db->insert_batch('paquetes_articulos', $data_paquete_articulo);
		}

		// Inserta los datos de las ips
		if ($ips)
		{
			$data_ips = array();
			for ($i=1; $i < 6; $i++) {
				if ($_POST['fip'.$i] != '')
					$data_ips[] = array('id_paquete'=>$id_paquete, 'ip'=>$_POST['fip'.$i]);
			}
			if (count($data_ips) >0)
				$this->db->insert_batch('paquetes_ips', $data_ips);
		}

		return $id_paquete;
	}

	public function get_paquetes_usuario()
	{
		$this->load->library('pagination');
		$params = array(
									'result_items_per_page' => '30',
									'result_page'           => (isset($_GET['pag'])? $_GET['pag']: 0)
							);

		if($params['result_page'] % $params['result_items_per_page'] == 0)
			$params['result_page'] = ($params['result_page']/$params['result_items_per_page']);

		$query = BDUtil::pagination("
				SELECT p.id_paquete, DATE(p.fecha_creacion) as fecha_creacion,
							 DATE(p.fecha_vencimiento) as fecha_vencimiento, p.usuarios_permitidos, p.tipo, p.status,
							 count(pa.id_paquete) as no_articulos
				FROM paquetes as p
				LEFT JOIN paquetes_articulos as pa ON pa.id_paquete=p.id_paquete
				WHERE DATE(now()) <= DATE(fecha_vencimiento) AND id_usuario = ".$_GET['id']."
				GROUP BY id_paquete
				ORDER BY id_paquete ASC
				", $params, true);
		$res = $this->db->query($query['query']);

		$response = array(
				'paquetes'       => array(),
				'total_rows'     => $query['total_rows'],
				'items_per_page' => $params['result_items_per_page'],
				'result_page'    => $params['result_page']
		);
		if($res->num_rows() > 0)
			$response['paquetes'] = $res->result();

		return $response;
	}

	/*
	 |	Cambia el estatus de paquete a eliminado
	 */
	public function eliminar_paquetes($id_paquete=FALSE)
	{
		$id_paquete = (isset($_GET['idp']))?$_GET['idp']:$id_paquete;
		// $this->db->update('paquetes', array('status'=>0), array('id_paquete'=>$id_paquete));
    $this->db->delete('paquetes', array('id_paquete'=>$id_paquete));
		return TRUE;
	}

	/*
	 |	Cambia el estatus de paquete a activo
	 */
	public function activar_paquetes($id_paquete=FALSE)
	{
		$id_paquete = (isset($_GET['idp']))?$_GET['idp']:$id_paquete;
		$this->db->update('paquetes', array('status'=>1), array('id_paquete'=>$id_paquete));

    $result = $this->db->query("SELECT p.id_paquete, u.email, u.nombre, u.pass, u.facebook_user_id, u.twitter_user_id, u.status
                               FROM usuarios as u
                               INNER JOIN paquetes as p ON p.id_usuario = u.id_usuario
                               WHERE p.id_paquete = " . $id_paquete);

    $this->email($result->result());
		return TRUE;
	}

	public function get_visitas_articulos($id_usuario, $per_page='30'){
		$this->load->library('pagination');
		$params = array(
									'result_items_per_page' => $per_page,
									'result_page'           => (isset($_GET['pag'])? $_GET['pag']: 0)
							);

		if($params['result_page'] % $params['result_items_per_page'] == 0)
			$params['result_page'] = ($params['result_page']/$params['result_items_per_page']);

		$sql = '';
		if($this->input->get('ffecha_ini')!='' && $this->input->get('ffecha_fin')!=''){
			$sql = " AND av.fecha BETWEEN '".$this->input->get('ffecha_ini')."' AND '".$this->input->get('ffecha_fin')."' ";
		}

		$query = BDUtil::pagination("SELECT
					a.id_articulo, a.numero, a.titulo, a.fecha_creacion, a.descripcion, a.imagen1,
					at.id_tipo, at.nombre, Count(*) AS visitas, 
					ticDiasFaltantes(".$this->session->userdata('id_usuario').", a.id_articulo ) AS acceso
				FROM articulos AS a
					INNER JOIN articulos_visitas AS av ON a.id_articulo = av.id_articulo
					INNER JOIN articulos_tipo AS at ON at.id_tipo = a.id_tipo
				WHERE av.id_usuario = ".$id_usuario.$sql."
				GROUP BY a.id_articulo
				ORDER BY visitas DESC
				", $params, true);
		$res = $this->db->query($query['query']);

		$response = array(
				'articulos'       => array(),
				'total_rows'     => $query['total_rows'],
				'items_per_page' => $params['result_items_per_page'],
				'result_page'    => $params['result_page']
		);
		if($res->num_rows() > 0)
			$response['articulos'] = $res->result();

		return $response;
	}


	/**
	 * Calcular la diferencia de dos fecha
	 * @param  Date $date1 Primera Fecha (Debe se mayor que $date2)
	 * @param  Date $date2 Segunda Fecha (Debe se menor que $date1)
	 * @return array
	 */
	public function diff_two_dates($date1, $date2){
		/*$date1 = new DateTime($date1);
		$date2 = new DateTime($date2);
		$interval = $date1->diff($date2);

		return array('y'=>$interval->y, 'm'=>$interval->m, 'd'=>$interval->d);*/

		return String::diasEntreFechas($date2, $date1);
	}

  public function email($data)
  {
    $this->load->library('my_mandrill', array('apikey' => 'PqSByLA4xEvYE1b7cfM2ow'));

    if ($data[0]->email !== '' && $data[0]->pass !== '')
      $data2['content_text'] = "<strong>Tu paquete con numero de compra ".$data[0]->id_paquete." ha sido activado correctamente. \nTu nombre de usuario es: ".$data[0]->email." <br> Tu contraseña es: ".$data[0]->pass."</strong>";
    else
      $data2['content_text'] = "<strong>Tu paquete con numero de compra ".$data[0]->id_paquete." ha sido activado correctamente. \nTe haz registrado por medio de los servicios de Facebook o Twitter, te recomendamos completes tu perfil para que tambien puedas acceder mediante tu nombre de usuario y password.</strong>";


    $html       = $this->load->view('panel/usuarios/template_email', $data2, TRUE);

    $text_plain = "** Tienda de Conocimiento Capp ¡Bienvenido!
                  ------------------------------------------------------------
                 Ya son más de 1,000 personas u organizaciones como tu participando y accediendo al conocimiento más exclusivo sobre el estado de Colima.

                  ".$data2['content_text']."

                  Nuestra misión en la Tienda de Conocimiento Capp (TIC) es generar el mejor conocimiento para proporcionártelo de forma simple, breve y clara. Haz tomado una buena decisión al unirte a nosotros. TIC es ya la herramienta preferida de gobiernos, organizaciones civiles, empresas, estudiantes, académicos, trabajadores independientes, y ciudadanos interesados en entender el estado de Colima.

                  Entra, recorre y disfruta de TIC, que es tu tienda. Si tienes alguna duda o sugerencia que hacernos, contáctanos. Tu opinión nos importa, te escuchamos.

                  Equipo de la Tienda de Conocimiento Capp

                  ============================================================
                  Derechos Reservados © 2012 Tienda de Conocimiento Capp. Todos los derechos reservados

                  Recibiste este correo electrónico porque te registraste en , un espacio que reúne conocimiento exclusivo, útil para académicos, estudiantes, funcionarios públicos, empresarios y activistas sociales. Si crees que es un error, puedes dejar de recibirlos haciendo click aquí.

                  ** Siguenos en Twitter (#)
                  ** Siguenos en Facebook (#)
                  ** www.tiendacapp.com (http://www.tiendacapp.com/)";

    $email = array(
        'html' => $html,
        'text' => $text_plain,
        'subject' => 'Tienda de Conocimiento Capp ¡Bienvenido!',
        'from_email' => 'contacto@consultoriacapp.com',
        'to' => array(
            array(
                'email' => $data[0]->email,
                'name'  => $data[0]->nombre
            )
        )
    );

    return $this->my_mandrill->send($email);

  }


}